<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

<script>
    // form : 将伪数组转化成真正的数组
    let lis = document.querySelectorAll('li')
    console.log(lis) // NodeList
    console.log(Array.isArray(lis)) // false 

    let lis2 = Array.from(lis)
    console.log(lis2)
    console.log(Array.isArray(lis2)) // true
    
</script>

<body>
    <script>

        // every 所有结果都满足则返回true  否则为 false
        let flag1 = [1, 2, 3].every((item) => {
            return item > 2 // false
        })

        // some 只要有一个条件满足则返回true 否则为false
        let flag2 = [1, 2, 3].some(item => {
            return item > 2 // true
        })

        // filter 过滤：  返回一个满足条件的数组
        let arr1 = [1, 2, 3].filter(item => {
            return item > 1 // [2,3]
        })

        // map: 返回该数组重新被计算的新数组
        let arr2 = [1, 2, 3].map(item => {
            return item * item // [1,4,9]
            return item > 2 // [true,false,false]
        })

        // reduce 求值：返回该数组累计值 可加减乘除等运算
        let arr3 = [18, 3, 2].reduce((pre, current) => {
            return pre + current // 0+18+3+2=23
            return pre - current // 0-18-3-2=-23
        }, 0)

        // find 查询return最近一个满足条件的值 全都不满足则undefined 
        let a = [1, 2, 3, 4, 5, 6].find(item => {
            return item > 2  // 3
            return item > 7 // undefined 
        })

        // findIndex 查询return最近一个满足条件的索引值 全都不满足则返回 -1
        let index = [2, 3, 6, 7, 9, 15, 67].findIndex(item => {
            return item > 8  // 4
            return item > 100 // -1
        })
    </script>
</body>

</html>